<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,zdy.web.bean.User" %>
<%
    String title = "User Agent Example";
     //session.setAttribute("user",  null);
    User u=new User();
    u.setName("zoudy");
    session.setAttribute("sessionuser",  u);
    request.setAttribute("requser",  u);
%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>

<h1><%=title%></h1>
<br>
</center>
<br>el表达式不针对 jsp声明的普通变量
<br>只针对特定的jsp对象 例如pageContext、request、session和application
<br>EL的内置对象 不同于jsp内置对象
<% pageContext.setAttribute("aaaa", "pageContextvalue"); %>
<% request.setAttribute("name", "xh"); %>
<% session.setAttribute("cccc", "sesionvalue"); %>
<% application.setAttribute("ggggg", "applvalue"); %>


<h1>错误的案例  ： ${title} </h1> 
<h1>正确的案例 pageContext.attr  ： ${aaaa} </h1> 
<h1>正确的案例 request.attr  ： ${name} </h1> 

<h1>正确的案例  session.attr ： ${cccc} </h1> 
<br>application.getAttribute("ggggg") :<%=application.getAttribute("ggggg")%>
<h1>正确的el案例 application.attr ： ${ggggg} </h1> 


<br>演示对象属性的读， 对象一定要是bean格式 就是所有属性必须有get和set方法,4种读法：
<ul>
<li>session.getAttribute("user") :<%= ((User)session.getAttribute("sessionuser")).getName()%></li>
<li>正确的el案例 session.attr1 ： ${sessionScope.sessionuser["name"]} </li> 
<li>正确的el案例 session.attr2 ： ${sessionScope.sessionuser.name} </li> 
<li>正确的el案例 session.attr3 ： ${sessionuser.name} </li> 
</ul>
<br>演示对象属性的读， 对象一定要是bean格式 就是所有属性必须有get和set方法,4种读法：
<ul>
<li>request.getAttribute("user") :<%= ((User)request.getAttribute("requser")).getName()%></li>
<li>正确的el案例 request.attr1 ： ${requestScope.requser["name"]} </li> 
<li>正确的el案例 request.attr2 ： ${requestScope.requser.name} </li> 
<li>正确的el案例 request.attr3 ： ${requser.name} </li> 
</ul>
<h1>PageScope applicationScope 语法 同上</h1> 




<ul> request.eee 传入字符串：
<li>request.getParameter("eee") :<%= request.getParameter("eee")%></li>
<li>正确的el案例: ${param.eee} </li> 
<li>正确的el案例 ： ${param["eee"]} </li> 
<li>错误的el案例 ： ${eee} </li> 
</ul>


<ul> request.eee 传入数组： 一般只有在post的时候才会用到这个方法
<li>request.getParameterValues("eee") :<%= request.getParameterValues("eee")%></li>
<li>正确的el案例: ${paramValues.eee[0]} </li> 
<li>正确的el案例 ： ${paramValues["eee"][0]} </li> 
<li>错误的el案例 ： ${eee} </li> 
</ul>
<br> cookie同上

<br>
<br> header 读取的例子
<li>
request.header jsp的例子请见 
<a href="/web1/jsp/day2/head.jsp" >  day2/head.jsp</a>
</li>


<div >header 不支持 变量读取
<p>${header["connection"]}</p>
<p>${header.connection}</p>
</div>



<br>
<br> init 读取的例子只取web.xml 里面 context-param 标签 里面的 param-name 对应的value
<li>
${initParam["userid"]}
</li>
<li>
${initParam.userid}
</li>
<li>filter和servlet和listener里面的初始化参数不能取
${initParam.Site}
</li>
</body>
</html>